<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ajax-client</title>

    <link rel="stylesheet" href="./js/jasmine-3.2.1/lib/jasmine-3.2.1/jasmine.css">

    <script src="./js/jquery-3.3.1.js"></script>
    <script src="./js/jasmine-3.2.1/lib/jasmine-3.2.1/jasmine.js"></script>
    <script src="./js/jasmine-3.2.1/lib/jasmine-3.2.1/jasmine-html.js"></script>
    <script src="./js/jasmine-3.2.1/lib/jasmine-3.2.1/boot.js"></script>
</head>
<body>
<div>
    <!--<button type="button" onclick="get()">测试请求get1</button>-->

    <script>
        // function get() {
        //     $.getJSON('http://localhost:8090/ajax-server/ajax/test').then(function (data) {
        //         alert(data);
        //     })
        // }

        // 每个测试用例的超时时间(超过这个时间停止(失败))
        jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000;

        // 请求的接口的前缀
        var baseUrl = '/ajaxserverapache';

        // 测试模块1(测试通不过，会产生跨域问题)
        describe('测试模块1', function () {
            // 测试方法2实现
            it('我是测试方法描述, 现在测试的是get1方法', function (done) {
                // 声明变量接收返回结果
                var result;
                $.getJSON(baseUrl + '/ajax/test').then(function (data) {
                    result = data;
                });
                // 由于是异步请求，需要使用setTimeout来校验
                setTimeout(function () {
                    // 断言
                    expect(result).toEqual({
                        'data': 'get1 ok'
                    });
                    // 结束
                    done();
                }, 300);
            });

            // // 测试方法2实现
            // it('使用jsonp请求的方法', function (done) {
            //     // 声明变量接收返回结果
            //     var result;
            //     $.ajax({
            //         url: baseUrl + '/ajax/test',
            //         dataType: 'jsonp',
            //         jsonp: 'callback',
            //         success: function (data) {
            //             result = data;
            //         }
            //     });
            //     // 由于是异步请求，需要使用setTimeout来校验
            //     setTimeout(function () {
            //         // 断言
            //         expect(result).toEqual({
            //             'data': 'get1 ok'
            //         });
            //         // 结束
            //         done();
            //     }, 300);
            // });

            // 测试方法3实现
            it('postJson请求的方法', function (done) {
                // 声明变量接收返回结果
                var result;
                $.ajax({
                    type: 'post',
                    url: baseUrl + '/ajax/postJson',
                    data: JSON.stringify({name: 'lxl'}),
                    contentType: 'application/json;charset=utf-8',
                    success: function (data) {
                        result = data;
                    }
                });
                // 由于是异步请求，需要使用setTimeout来校验
                setTimeout(function () {
                    // 断言
                    expect(result).toEqual({
                        'data': 'lxl'
                    });
                    // 结束
                    done();
                }, 300);
            });

            // 测试方法4实现
            it('带cookie的请求方法', function (done) {
                // 声明变量接收返回结果
                var result;
                $.ajax({
                    type: 'get',
                    url: baseUrl + '/ajax/getCookie',
                    xhrFields: {
                        withCredentials: true
                    },
                    success: function (data) {
                        result = data;
                    }
                });
                // 由于是异步请求，需要使用setTimeout来校验
                setTimeout(function () {
                    // 断言
                    expect(result).toEqual({
                        'data': 'lxl'
                    });
                    // 结束
                    done();
                }, 300);
            });

            // 测试方法5实现
            it('带自定义请求头的请求方法', function (done) {
                // 声明变量接收返回结果
                var result;
                $.ajax({
                    type: 'get',
                    url: baseUrl + '/ajax/getCustomHeader',
                    headers: {
                        'x-header1': 'AAA'
                    },
                    beforeSend: function (xhr) {
                        xhr.setRequestHeader('x-header2', 'BBB');
                    },
                    success: function (data) {
                        result = data;
                    }
                });
                // 由于是异步请求，需要使用setTimeout来校验
                setTimeout(function () {
                    // 断言
                    expect(result).toEqual({
                        'data': 'AAABBB'
                    });
                    // 结束
                    done();
                }, 300);
            });
        });

    </script>
</div>
</body>
</html>